package cn.com.code.design;

/**
 * 状态抽象类
 *
 * @author zhengpei
 * @date 2021/11/3
 */
public abstract class State {

  /**
   * 活动审批
   *
   * @param activityId    活动ID
   * @param currentStatus 当前状态
   * @return
   */
  public abstract Result arraignment(String activityId, Enum<Status> currentStatus);

  /**
   * 审批通过
   *
   * @param activityId    活动ID
   * @param currentStatus 当前状态
   * @return
   */
  public abstract Result checkPass(String activityId, Enum<Status> currentStatus);

  /**
   * 审批拒绝
   *
   * @param activityId    活动ID
   * @param currentStatus 当前状态
   * @return
   */
  public abstract Result checkRefuse(String activityId, Enum<Status> currentStatus);

  /**
   * 撤销审批
   *
   * @param activityId    活动ID
   * @param currentStatus 当前状态
   * @return
   */
  public abstract Result checkRevoke(String activityId, Enum<Status> currentStatus);

  /**
   * 活动关闭
   *
   * @param activityId    活动ID
   * @param currentStatus 当前状态
   * @return
   */
  public abstract Result close(String activityId, Enum<Status> currentStatus);

  /**
   * 开启新活动
   *
   * @param activityId    活动ID
   * @param currentStatus 当前状态
   * @return
   */
  public abstract Result open(String activityId, Enum<Status> currentStatus);

  /**
   * 活动执行
   *
   * @param activityId    活动ID
   * @param currentStatus 当前状态
   * @return
   */
  public abstract Result doing(String activityId, Enum<Status> currentStatus);

}
